package com.cn.zpark.dao.impl;

import com.cn.zpark.beans.User;
import com.cn.zpark.dao.IUserDao;
import com.cn.zpark.utils.DruidUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 * @PackageName: com.cn.zpark.dao.impl
 * @ClassName: UserDaoImpl
 * @Description:持久层接口实现类
 * @author: RZS
 * @date: 2022/4/27  20:08
 */
public class UserDaoImpl implements IUserDao {

    // 准备数据库连接信息
    private Connection conn = null;
    private PreparedStatement stat = null;
    private ResultSet res = null;

    // 查询所有数据
    @Override
    public List<User> selectUserAll() {
        return null;
    }

    // 查询前10条数据
    @Override
    public List<User> selectUserTen() {
        // 定义list集合，用于存放user对象
        List<User> list = new ArrayList<>();
        try {
            // 获取数据库连接对象
            conn = DruidUtils.getConn();
            // 创建sql语句
            String sql = "select id, username, password, phone, email, salary from user limit ?, ?";
            // 创建预编译sql对象
            stat = conn.prepareStatement(sql);
            // 替换占位符
            stat.setInt(1, 0);
            stat.setInt(2, 10);
            // 执行sql，并且获取返回结果集
            res = stat.executeQuery();
            // 封装信息
            while (res.next()) {
                User user = new User();
                user.setId(res.getInt("id"));
                user.setUsername(res.getString("username"));
                user.setPassword(res.getString("password"));
                user.setPhone(res.getString("phone"));
                user.setEmail(res.getString("email"));
                user.setSalary(res.getDouble("salary"));

                // 添加到集合
                list.add(user);
            }
        } catch(Exception e) {
            e.printStackTrace();
        } finally {
            // 关闭资源
            DruidUtils.close(res, stat, conn);
        }

        // 返回查询结果
        return list;
    }

    /**
     * 分页查询
     * @param startPage 起始页码
     * @param number 每页显示数量
     * @return 分页查询数据
     */
    @Override
    public List<User> selectUserPaging(Integer startPage, Integer number) {
        return null;
    }

    /**
     * 根据用户名查询数据
     * @param username 用户名
     * @return 用户数据
     */
    @Override
    public User selectUserByUsername(String username) {
        return null;
    }
}
